package TGA.DB2.DB4OApp;

import java.io.File;
import java.sql.Date;

import TGA.DB2.Entity.*;

import com.db4o.*;
import com.db4o.query.*;

public class MainDB4O {
	public static String DB4OFILENAME = "bd2.yap";

	public static void main(String[] args) {
		
		new File(DB4OFILENAME).delete(); // reseta o BD
		
		ObjectContainer db = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), DB4OFILENAME);

		
		
		Holding h1 = new Holding(1, "Grupo MasBahTche");
		
		Empresa e1 = new Empresa(1, "Tchê Sapatos Ltda", "Tchê", "Rua João Vedelino, 145", h1);
		Empresa e2 = new Empresa(2, "Juca Sapato Feminio Ltda", "Juca Sapato", "Rua Zé Teodoro, 666", h1);
		
		Loja l1 = new Loja(1, "Filial 01", new Date(2014, 01, 01), 16, e1);
		Loja l2 = new Loja(2, "Filial 02", new Date(2014, 02, 15), 30, e1);
		Loja l3 = new Loja(1, "Filial 01", new Date(2014, 03, 30), 15, e2);
		
		Departamento d1 = new Departamento(1, "Departamento 1", l1);
		Departamento d2 = new Departamento(2, "Departamento 1", l1);
		Departamento d3 = new Departamento(3, "Departamento 1", l1);
		Departamento d4 = new Departamento(1, "Departamento 1", l3);
		
		Secao s1 = new Secao(1, "Sapato", d1);
		Secao s2 = new Secao(2, "Bolsa", d2);
		
		Categoria c1 = new Categoria(1, "Scarpin", s1);
		Categoria c2 = new Categoria(2, "Rasteirinha", s1);
		Categoria c3 = new Categoria(3, "Bolsa de Mão", s2);
		
		Grade g1 = new Grade(1, "Grade Brasil Feminino");
		Grade g2 = new Grade(2, "Grade Brasil Masculino");
		Grade g3 = new Grade(3, "Grade Bolsa");
		
		Produto p1 = new Produto(1, "Scarpin Velasquez", 10, 10, c1, g1);
		
		Cor cor1 = new Cor(1, "Azul");
		Cor cor2 = new Cor(2, "Preto");
		
		Tamanho t1 = new Tamanho(1, "33");
		Tamanho t2 = new Tamanho(2, "34");
		Tamanho t3 = new Tamanho(3, "35");
		Tamanho t4 = new Tamanho(4, "36");
		Tamanho t5 = new Tamanho(5, "37");
		
		GradeItem gi1 = new GradeItem(1, "Azul tamanho 33", g1, cor1, t1);
		GradeItem gi2 = new GradeItem(2, "Azul tamanho 33", g1, cor1, t2);
		GradeItem gi3 = new GradeItem(3, "Azul tamanho 33", g1, cor1, t3);
		GradeItem gi4 = new GradeItem(4, "Azul tamanho 33", g1, cor1, t4);
		GradeItem gi5 = new GradeItem(5, "Azul tamanho 33", g1, cor1, t5);
		
		EstoqueGradeItem egi1 = new EstoqueGradeItem(5, 2, l1, p1, gi1);
		EstoqueGradeItem egi2 = new EstoqueGradeItem(2, 5, l1, p1, gi2);
		EstoqueGradeItem egi3 = new EstoqueGradeItem(3, 3, l1, p1, gi3);
		
		db.store(h1);
		db.store(e1); db.store(e2);
		db.store(l1); db.store(l2); db.store(l3);
		db.store(d1); db.store(d2); db.store(d3); db.store(d4); 
		db.store(s1); db.store(s2);
		db.store(c1); db.store(c2); db.store(c3);
		db.store(g1); db.store(g2); db.store(g3);
		db.store(p1);
		db.store(cor1); db.store(cor2);
		db.store(t1); db.store(t2); db.store(t3); db.store(t4); db.store(t5);
		db.store(gi1); db.store(gi2); db.store(gi3); db.store(gi4); db.store(gi5);
		db.store(egi1); db.store(egi2); db.store(egi3);;
		
		
		/* Query para testes:
		ObjectSet result = db.queryByExample(new EstoqueGradeItem());
		System.out.println(result.size()); for (Object o : result) {
		System.out.println(((EstoqueGradeItem) o).getEstoqueMinimo()); }
		*/
		db.close();
	}

}
